package src.list;

import org.omg.CORBA.Object;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 创建顺序表
 *
 * @author starsea
 * @date 2024-08-14 12:54
 */

public class MyArrayList {
    //首先有一个数组
    //一个数据统计
    private static final int DEFAULT_SIZE = 10;
    private int [] elem;

    private int usedSize;

    public MyArrayList() {
        this.elem =  new int[DEFAULT_SIZE];
        usedSize=0;
    }

    //打印顺序表
    void disPlay() {
        for (int i = 0; i < usedSize; i++) {
            System.out.print(elem[i] + " ");

        }
        System.out.println();

    }

    //添加元素，考虑越界问题
    void add(int num) {
       isFull();
       elem[usedSize]=num;
       usedSize++;

    }

    //判断是不是满了，若是满了就扩容
     void isFull() {
        if (usedSize == elem.length) {
            elem= Arrays.copyOf(elem,DEFAULT_SIZE*2);
        }

    }
    //指定位置添加元素
    void add(int post, int num){
        isFull();
        if(!checkPost(post))
        {
            return;
        }
        for(int i=usedSize;i>post;i--)
        {
            elem[i]=elem[i-1];
        }
        elem[post]=num;
        usedSize++;

    }
    //判断是不是包含一个元素
    boolean contains(int num)
    {
        for(int i=0;i<usedSize;i++)
        {
            if(elem[i]==num)
            {
                return true;
            }
        }
        return false;

    }
    //判断post位置是不是合法
    boolean checkPost(int post)
    {
        if(post<0 || post>=usedSize)
        {
            System.out.println("输入不合法");
            return false;
        }
        return true;

    }
    //获取pos位置的元素
    int getPost(int post){
        if(checkPost(post))
        {
            return elem[post];
        }
        return -1;

    }
    //查找某个元素的位置
    int getElement(int num)
    {
        for(int i=0;i<usedSize;i++)
        {
            if(elem[i]==num)
            {
                return i;
            }
        }
        return -1;
    }
    //指定位置删除元素
    void deleteByPost(int post){
        if(checkPost(post))
        {
            for(int i=post;i<usedSize-1;i++)
            {
                elem[i]=elem[i+1];
            }
            usedSize--;
        }
    }

    //删除元素
    void clear()
    {
        elem=  new int[DEFAULT_SIZE];
        usedSize=0;
    }
}
